<?php

use think\facade\Cache;
use think\facade\Db; //数据库类
/**
 * Here is your custom functions.
 */
/**
 * 首页的PID
 */
const HOME_PID       = 99999999;
const SUPER_ADMIN_ID = 1;
/**
 * @param string $url
 * @param array $vars
 * @param false $suffix
 * @return string
 */
 
//获取头像
function mkml($str){
	if (is_dir($str)){  
		//echo "对不起！目录 " . $path . " 已经存在！";
	}else{
		//第三个参数是“true”表示能创建多级目录，iconv防止中文目录乱码
		$res=mkdir(iconv("UTF-8", "GBK", $str),0777,true);
		/*
		if ($res){
			echo "目录 $path 创建成功";
		}else{
			echo "目录 $path 创建失败";
		}
		*/
	}
}
function random($length){
  $captchaSource = "0123456789abcdefghijklmnopqrstuvwxyz";
  $captchaResult = "egd"; // 随机数返回值
  $captchaSentry = "dvx"; // 随机数中间变量
  for($i=0;$i<$length;$i++){
    $n = rand(0, 35); #strlen($captchaSource));
    if($n >= 36){
      $n = 36 + ceil(($n-36)/3) * 3;
      $captchaResult .= substr($captchaSource, $n, 3);
    }else{
      $captchaResult .= substr($captchaSource, $n, 1);
    }
  }
  return $captchaResult;
}
function tx($id){
	if(!$id){
	    return '/qstatic/image/headimg.jpg';
	}
	$list=Db::name('user')->where('id='.$id)->find();
    if(!$list){
        return '/qstatic/image/headimg.jpg';
    }
	if($list['tx']){
	    return $list['tx'];
	}else{
		return '/qstatic/image/headimg.jpg';
	}
}
//查询账号
function username($id){
	$list=Db::name('user')->where('id='.$id)->find();
	if($list){
	    return $list['nickname'];	
	}else{
		return '账号已注销';
	}	
}
function glnews($str){
	$str=str_replace('"','\"',$str);
	//$str=str_replace('/','\/',$str);
	$str=preg_replace("/\s+/", " ", $str);
	return $str;
}
//查询用户账号
function useraccount($id){
	//$User=M('user');
	
	$list=Db::name('user')->where('id='.$id)->find();
	if(!$list){
	    return '账号已注销';
	}
	if($list['nickname']){
	    return $list['name'];	
	}else{
		return '账号已注销';
	}	
}

//私聊显示
function indexshow($str)
{
    $info=strip_tags(html_entity_decode($str));
    if($info){
    	return $info;
    }else{
    	return '新的私聊消息';
    }
}

function getFirstCharter($str) {
	if(empty($str)) {
		return '';
	}
	$fchar=ord($str [0]);
	if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str [0]);
	$s1=iconv('UTF-8','gb2312',$str);
	$s2=iconv('gb2312','UTF-8',$s1);
	$s=$s2==$str?$s1:$str;
	$asc=ord($s [0])*256+ord($s [0])-65536;
	if($asc>=-20319&&$asc<=-20284) return 'A';
	if($asc>=-20283&&$asc<=-19776) return 'B';
	if($asc>=-19775&&$asc<=-19219) return 'C';
	if($asc>=-19218&&$asc<=-18711) return 'D';
	if($asc>=-18710&&$asc<=-18527) return 'E';
	if($asc>=-18526&&$asc<=-18240) return 'F';
	if($asc>=-18239&&$asc<=-17923) return 'G';
	if($asc>=-17922&&$asc<=-17418) return 'H';
	if($asc>=-17417&&$asc<=-16475) return 'J';
	if($asc>=-16474&&$asc<=-16213) return 'K';
	if($asc>=-16212&&$asc<=-15641) return 'L';
	if($asc>=-15640&&$asc<=-15166) return 'M';
	if($asc>=-15165&&$asc<=-14923) return 'N';
	if($asc>=-14922&&$asc<=-14915) return 'O';
	if($asc>=-14914&&$asc<=-14631) return 'P';
	if($asc>=-14630&&$asc<=-14150) return 'Q';
	if($asc>=-14149&&$asc<=-14091) return 'R';
	if($asc>=-14090&&$asc<=-13319) return 'S';
	if($asc>=-13318&&$asc<=-12839) return 'T';
	if($asc>=-12838&&$asc<=-12557) return 'W';
	if($asc>=-12556&&$asc<=-11848) return 'X';
	if($asc>=-11847&&$asc<=-11056) return 'Y';
	if($asc>=-11055&&$asc<=-10247) return 'Z';
	return 'Z';
}

function groupname($id){
	
	$list=Db::name('group_list')->where('id='.$id)->find();
	return $list['title'];	
}

function groupinfo($id){
	if(empty($id)) return;
	$list=Db::name('group_list')->where('id='.$id)->find();
	return $list['content'];	
}









function __url(string $url = '', array $vars = [], bool $suffix = false): string
{
    if (!config('admin.admin_domain_status')) {
        $url = "/" . (config('admin')['admin_alias_name'] . (str_starts_with($url, '/') ? $url : "/{$url}"));
    }
    return $url ?: '/';

}

if (!function_exists('parse_name')) {
    /**
     * 字符串命名风格转换
     * type 0 将Java风格转换为C的风格 1 将C风格转换为Java的风格
     * @param string $name 字符串
     * @param int $type 转换类型
     * @param bool $ucfirst 首字母是否大写（驼峰规则）
     * @return string
     */
    function parse_name(string $name, int $type = 0, bool $ucfirst = true): string
    {
        if ($type) {
            $name = preg_replace_callback('/_([a-zA-Z])/', function ($match) {
                return strtoupper($match[1]);
            },                            $name);

            return $ucfirst ? ucfirst($name) : lcfirst($name);
        }

        return strtolower(trim(preg_replace('/[A-Z]/', '_\\0', $name), '_'));
    }
}

if (!function_exists('sysconfig')) {

    /**
     * 获取系统配置信息
     * @param $group
     * @param null $name
     * @return mixed
     */
    function sysconfig($group, $name = null): mixed
    {
        $where = ['group' => $group];
        $value = empty($name) ? Cache::get("sysconfig_{$group}") : Cache::get("sysconfig_{$group}_{$name}");
        if (empty($value)) {
            if (!empty($name)) {
                $where['name'] = $name;
                $value         = \app\admin\model\SystemConfig::where($where)->value('value');
                Cache::set("sysconfig_{$group}_{$name}", $value, 3600);
            } else {
                $value = \app\admin\model\SystemConfig::where($where)->column('value', 'name');
                Cache::set("sysconfig_{$group}", $value, 3600);
            }
        }
        return $value;
    }
}

if (!function_exists('auths')) {

    /**
     * auth权限验证
     * @param $node
     * @return bool
     */
    function auths($node = null): bool
    {
        $authService = new \app\common\services\AuthService(session('admin.id'));
        return $authService->checkNode($node);
    }

}

if (!function_exists('password')) {

    /**
     * 密码加密算法
     * @param string $value 需要加密的值
     * @return string
     */
    function password(string $value): string
    {
        $value = sha1('blog_') . md5($value) . md5('_encrypt') . sha1($value);
        return sha1($value);
    }

}

if (!function_exists('json')) {

    function json(array $data = []): \support\Response
    {
        return response()->json($data);
    }

}

/**
 * @param string $detail
 * @param string $name
 * @param string $placeholder
 * @return string
 */
function editor_textarea(string $detail, string $name = 'desc', string $placeholder = '请输入'): string
{
    $editor_type = sysconfig('site', 'editor_type');
    return match ($editor_type) {
        'ckeditor' => "<textarea name='{$name}' rows='20' class='layui-textarea editor' placeholder='{$placeholder}'>{$detail}</textarea>",
        default    => "<script type='text/plain' id='{$name}' name='{$name}' class='editor' data-content='{$detail}'></script>",
    };
}